Bioconda 入門 Anaconda、Minicondaとの違いと EC2 に実行環境をセットアップしてみた
Bioconda を利用しバイオインフォマティクスのツールをセットアップする機会がありました。そもそもなところで Anaconda, Miniconda, Bioconda これら Conda シリーズの違いを理解できていなかったため Bioconda を中心に整理してみました。
Bioconda とは
Bioconda とはの前に Conda とは何か?知っておく必要があります。
Conda とは
conda
とはyum
, apt
の様なパッケージ管理システムです。パッケージ(ライブラリ)のバージョン管理するために仮想環境を作成する機能も持っています。そして、conda
をラップしてより使いやすくした Anaconda と Miniconda が提供されています。
引用: GCB 2020 Tutorial — Bioconda documentation
Anaconda と Miniconda
Anaconda はデータサイエンスをはじめるために必要なもの一式が揃っている Python のディストリビューションです。一式揃っている反面、データーサイズが大きいです。
Miniconda はパッケージ管理システムのconda
と必要最低限のパッケージのみにとどめた Python のディストリビューションです。Anaconda の軽量版が文字通りの Miniconda です。
改めて Bioconda とは
Bioconda は Anaconda, Miniconda の横並びに位置する Python のディストリビューションかと思っていましたが違いました。その説明をするためにはまずチャンネルを知る必要があります。
conda
にはチャンネルと呼ばれる外部リポジトリを登録してパッケージの追加を行える機能があります。yum
やapt
のリポジトリと同じイメージです。
$ conda config --add channels [チャンネル名]
そのチャンネルの中にBioconda という名前のチャンネルがあります。Bioconda チャンネルを追加することで、いわゆる Bioconda を利用できる状態になります。一般的には最小構成の Miniconda をベースに Bioconda チャンネル+αを追加することで Bioconda の実行環境となります。
$ conda config --add channels defaults $ conda config --add channels bioconda $ conda config --add channels conda-forge $ conda config --set channel_priority strict
Usage — Bioconda documentation
Bioconda の実態は Miniconda + Bioconda チャンネル + α だったわけですが、Bioconda だと何が嬉しいのでしょうか?
それはバイオインフォマティクスの分野で利用されるゲノム解析のツール類のインストールを簡単にできる点が最大のメリットです。
バイオインフォマティクスのツールを個別にインストールした経験はないのですが、yum
やapt
のパッケージ管理システムなしの状況と同じですので、各種ツールのインストール時の依存関係の解決が大変なのは容易に想像がつきます。
ここから先は実際に Bioconda の環境のセットアップと、ゲノム解析ツールのインストールを試してみます。
Bioconda 環境を作成してみた
OS は Ubuntu 22.04 LTS の AMI から起動した EC2 をベースに Bioconda をセットアップしてみます。
$ head -n 1 /etc/os-release PRETTY_NAME="Ubuntu 22.04.2 LTS" $ curl http://169.254.169.254/latest/meta-data/ami-id ami-0d979355d03fa2522 $ python3 --version Python 3.10.6
インスタンスタイプはt3.large
を使用しています。ゲノム解析ツールを実行するには非力なスペックです。EBS のディスクサイズは 20 GB を指定しました。Miniconda + Bioconda の環境に Samtools をインストールした状態で 3 GB しか使用しませんでした。
$ df -h Filesystem Size Used Avail Use% Mounted on /dev/root 20G 3.0G 17G 16% / tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 773M 820K 772M 1% /run tmpfs 5.0M 0 5.0M 0% /run/lock /dev/nvme0n1p15 105M 6.1M 99M 6% /boot/efi tmpfs 387M 4.0K 387M 1% /run/user/1000
Miniconda のインストール
今回の検証環境は Python 3.10 代がインストールされていたため、3.10 系のインストーラーをダウンロードし実行します。インストールは以下のリンクを参考にします。
wget https://repo.anaconda.com/miniconda/Miniconda3-py310_23.1.0-1-Linux-x86_64.sh bash Miniconda3-py310_23.1.0-1-Linux-x86_64.sh -b -p $HOME/miniconda source ~/miniconda/bin/activate conda init
conda init
でシェルの初期化します。初期化を反映するには多くのシェルは再起動が必要とのことです。Bash も該当するかわかりませんが、exit
かlogout
でシェルを終了してから後続の作業を行います。
IMPORTANT: After running conda init, most shells will need to be closed and restarted for changes to take effect. conda init — conda 23.3.0.post14+ed75abca3 documentation
EC2 インスタンスに SSH やセッションマネージャーで接続していると切断されます。接続し直しましょう。
exit
conda
コマンドを使える Miniconda のセットアップが完了しました。プロンプトにbase
の文字が表示されるようになります。
(base) ubuntu@ip-10-0-1-230:~$ conda --version conda 23.1.0
Bioconda のセットアップ
Bioconda チャンネルを追加します。インストールは以下のリンクを参考にします。
conda config --add channels defaults conda config --add channels bioconda conda config --add channels conda-forge conda config --set channel_priority strict
チャンネル追加だけでセットアップは完了です。設定されているチャンネルを確認するには以下のコマンドを入力すると確認できます。
$ conda config --get channels --add channels 'defaults' # lowest priority --add channels 'bioconda' --add channels 'conda-forge' # highest priority
Conda 仮想環境作成
ゲノム解析ツールはバージョンを指定してインストールすることが多いかと思います。もしバージョンによって出力結果に差異がでると困りますから。そのため、ツール毎のバージョンを管理するためプロジェクトなど単位で仮想環境を作成すると都合が良いかと思います。
初期状態はデフォルト Conda 環境のbase
のみ存在しています。
$ conda info -e # conda environments: # base * /home/ubuntu/miniconda
仮想環境を作成し、作成した環境に切り替えます。
conda create -n test-devio conda activate test-devio
仮想環境名のtest-devio
がプロンプトに表示されます。
(test-devio) ubuntu@ip-10-0-1-230:~$
仮想環境が作成されていることが確認できました。
$ conda info -e # conda environments: # base /home/ubuntu/miniconda test-devio * /home/ubuntu/miniconda/envs/test-devio
Conda を使用したゲノム解析ツールのインストール
SAMファイル、BAMファイルを解析するためのツールSamtoolsのインストールを例に進めていきます。
お目当てのツールがあり、バージョンを指定してインストールした場合はインストールできるバージョンはなにがあるのか確認したいと思います。conda search
コマンドで確認できます。
(test-devio) ubuntu@ip-10-0-1-230:~$ conda search samtools Loading channels: done # Name Version Build Channel samtools 0.1.12 0 bioconda samtools 0.1.12 1 bioconda samtools 0.1.12 2 bioconda samtools 0.1.13 0 bioconda samtools 0.1.13 1 bioconda samtools 0.1.14 0 bioconda samtools 0.1.14 1 bioconda samtools 0.1.15 0 bioconda samtools 0.1.16 0 bioconda samtools 0.1.17 0 bioconda samtools 0.1.18 0 bioconda samtools 0.1.18 h20b1175_12 bioconda samtools 0.1.18 h270b39a_11 bioconda samtools 0.1.18 hfb9b9cc_10 bioconda samtools 0.1.19 0 bioconda samtools 0.1.19 1 bioconda samtools 0.1.19 2 bioconda samtools 0.1.19 3 bioconda samtools 0.1.19 h20b1175_10 bioconda samtools 0.1.19 h270b39a_9 bioconda samtools 0.1.19 h94a8ba4_5 bioconda samtools 0.1.19 h94a8ba4_6 bioconda samtools 0.1.19 hf89b575_7 bioconda samtools 0.1.19 hfb9b9cc_8 bioconda samtools 1.0 0 bioconda samtools 1.0 1 bioconda samtools 1.0 hdd8ed8b_2 bioconda samtools 1.1 0 bioconda samtools 1.1 h20b1175_7 bioconda samtools 1.1 h270b39a_6 bioconda samtools 1.1 h94a8ba4_3 bioconda samtools 1.1 hf89b575_4 bioconda samtools 1.1 hfb9b9cc_5 bioconda samtools 1.2.rglab 0 bioconda samtools 1.2 0 bioconda samtools 1.2 1 bioconda samtools 1.2 2 bioconda samtools 1.3 0 bioconda samtools 1.3 1 bioconda samtools 1.3 2 bioconda samtools 1.3 h0592bc0_3 bioconda samtools 1.3 h1b8c3c0_5 bioconda samtools 1.3 h41a57b0_6 bioconda samtools 1.3 h80b0bb3_4 bioconda samtools 1.3 h9071d68_7 bioconda samtools 1.3.1 0 bioconda samtools 1.3.1 1 bioconda samtools 1.3.1 2 bioconda samtools 1.3.1 3 bioconda samtools 1.3.1 4 bioconda samtools 1.3.1 5 bioconda samtools 1.3.1 h0592bc0_6 bioconda samtools 1.3.1 h1b8c3c0_8 bioconda samtools 1.3.1 h41a57b0_9 bioconda samtools 1.3.1 h80b0bb3_7 bioconda samtools 1.3.1 h9071d68_10 bioconda samtools 1.4 0 bioconda samtools 1.4.1 0 bioconda samtools 1.5 0 bioconda samtools 1.5 1 bioconda samtools 1.5 2 bioconda samtools 1.6 0 bioconda samtools 1.6 h02bfda8_2 bioconda samtools 1.6 h244ad75_4 bioconda samtools 1.6 h244ad75_5 bioconda samtools 1.6 h3f2fef4_8 bioconda samtools 1.6 h4da6232_1 bioconda samtools 1.6 h9dace67_6 bioconda samtools 1.6 hb116620_7 bioconda samtools 1.6 hcd7b337_9 bioconda samtools 1.6 he673b24_3 bioconda samtools 1.7 0 bioconda samtools 1.7 1 bioconda samtools 1.7 2 bioconda samtools 1.8 2 bioconda samtools 1.8 3 bioconda samtools 1.8 4 bioconda samtools 1.8 h46bd0b3_5 bioconda samtools 1.9 h10a08f8_12 bioconda samtools 1.9 h43f6869_9 bioconda samtools 1.9 h46bd0b3_0 bioconda samtools 1.9 h57cc563_6 bioconda samtools 1.9 h57cc563_7 bioconda samtools 1.9 h8571acd_10 bioconda samtools 1.9 h8571acd_11 bioconda samtools 1.9 h8ee4bcc_1 bioconda samtools 1.9 h91753b0_2 bioconda samtools 1.9 h91753b0_3 bioconda samtools 1.9 h91753b0_4 bioconda samtools 1.9 h91753b0_5 bioconda samtools 1.9 h91753b0_8 bioconda samtools 1.10 h2e538c0_3 bioconda samtools 1.10 h9402c20_0 bioconda samtools 1.10 h9402c20_1 bioconda samtools 1.10 h9402c20_2 bioconda samtools 1.11 h6270b1f_0 bioconda samtools 1.12 h9aed4be_1 bioconda samtools 1.12 hd5e65b6_0 bioconda samtools 1.13 h8c37831_0 bioconda samtools 1.14 hb421002_0 bioconda samtools 1.15 h1170115_1 bioconda samtools 1.15 h3843a85_0 bioconda samtools 1.15.1 h1170115_0 bioconda samtools 1.15.1 h6899075_1 bioconda samtools 1.16.1 h00cdaf9_2 bioconda samtools 1.16.1 h6899075_0 bioconda samtools 1.16.1 h6899075_1 bioconda
今回は最新の1.16.1
を採用することにします。パッケージの名前の後ろに=[version]
を指定すると任意のバージョン指定ができます。
conda install samtools=1.16.1 -y
インストールの過程で表示されたメッセージの抜粋です。Samtools
一つとってもこれだけのパッケージが必要だったため、パッケージ管理システム様様です。
The following NEW packages will be INSTALLED: _libgcc_mutex conda-forge/linux-64::_libgcc_mutex-0.1-conda_forge _openmp_mutex conda-forge/linux-64::_openmp_mutex-4.5-2_gnu bzip2 conda-forge/linux-64::bzip2-1.0.8-h7f98852_4 c-ares conda-forge/linux-64::c-ares-1.18.1-h7f98852_0 ca-certificates conda-forge/linux-64::ca-certificates-2022.12.7-ha878542_0 htslib bioconda/linux-64::htslib-1.17-h6bc39ce_0 keyutils conda-forge/linux-64::keyutils-1.6.1-h166bdaf_0 krb5 conda-forge/linux-64::krb5-1.20.1-hf9c8cef_0 libcurl conda-forge/linux-64::libcurl-7.87.0-h6312ad2_0 libdeflate conda-forge/linux-64::libdeflate-1.13-h166bdaf_0 libedit conda-forge/linux-64::libedit-3.1.20191231-he28a2e2_2 libev conda-forge/linux-64::libev-4.33-h516909a_1 libgcc-ng conda-forge/linux-64::libgcc-ng-12.2.0-h65d4601_19 libgomp conda-forge/linux-64::libgomp-12.2.0-h65d4601_19 libnghttp2 conda-forge/linux-64::libnghttp2-1.51.0-hdcd2b5c_0 libssh2 conda-forge/linux-64::libssh2-1.10.0-haa6b8db_3 libstdcxx-ng conda-forge/linux-64::libstdcxx-ng-12.2.0-h46fd767_19 libzlib conda-forge/linux-64::libzlib-1.2.13-h166bdaf_4 ncurses conda-forge/linux-64::ncurses-6.3-h27087fc_1 openssl conda-forge/linux-64::openssl-1.1.1t-h0b41bf4_0 samtools bioconda/linux-64::samtools-1.16.1-h00cdaf9_2 xz conda-forge/linux-64::xz-5.2.6-h166bdaf_0 zlib conda-forge/linux-64::zlib-1.2.13-h166bdaf_4
指定したバージョン(1.6.1
)がインストールされていることが確認できました。
(test-devio) ubuntu@ip-10-0-1-230:~$ samtools version | head -n 1 samtools 1.16.1
以上で、Miniconda + Bioconda の環境構築と、ツールのインストールまで試してみました。
おわりに
普及している実行環境を学ぶという意味で Bioconda を調べて実行環境を作成してみました。かつて Bioconda が解決したゲノム解析ツールのインストールを手軽にしたは、昨今ではバイオインフォマティクス分野にもコンテナ化の波が来て Docker や Apptinaer で計算処理を実行する機会も増えてきたのではないでしょうか。Web 界隈のモダンな技術や、エコシステムをゲノムの研究現場に取り入れて、研究スピードを加速できるように引き続き双方を学んでいきたいと思います。